package TOP_Version1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLRecoverableException;
import java.text.Format;
import java.text.Normalizer.Form;
import java.util.Scanner;

public class Top_AdminRead {
	static 	Top_JDBC_SQL topsql = new Top_JDBC_SQL();
	static StringBuilder sb = new StringBuilder();
	static Scanner sc = new Scanner(System.in); 
	static boolean b = true;
	static String logId = Top_LoginMain.logIdVO;
	static String[] smt = { "순번", "ID", "이름", "연락처", "등록일자" };
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static String add = null;
	
	protected static void readAdmin() {
		
		sb.append("\n관리자 정보 검색").append("\n[ 01 ] 관리자 전체 검색").append("\n[ 02 ] 관리자 아이디 검색")
		.append("\n[ 03 ] 관리자 이름 검색").append("\n[ 09 ] 로그 아웃").append("\n[ 00 ] 상위 메뉴로 이동");
		System.out.println(sb);
		while ( b ) {
			System.out.print("수행하실 업무를 선택하세요 : ");
			switch ( sc.next() ) {
			case "1" : case "01" :
				sb = new StringBuilder();
				AdminFindAll(); b = false; break;
			case "2" : case "02" :
				sb = new StringBuilder();
				AdminFindId(); b = false; break;
			case "3" : case "03" :
				sb = new StringBuilder();
				AdminFindName(); b = false; break;
			case "9": case "09":
				System.err.println("사용자 접속을 종료합니다. 이용해 주셔서 감사합니다.");
				sb = new StringBuilder();
				logId = null;
				b = false; break;
			case "0" : case "00" :
				System.err.println("관리자 관련 업무 화면으로 이동합니다.");
				sb = new StringBuilder();
				Top_AdminMain.Top_AdminSubScreen(); b = false; break;
			default :
				System.err.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		} 
	}
	
	protected static void AdminFindAll() {

		try { 
			conn = Top_JDBC_Connection.openDataBase();
			pstmt = conn.prepareStatement(topsql.AdminSelectAll1SQL);
			rs = pstmt.executeQuery();
			for ( int i = 0; i <= 4; ++i ) {
				sb.append( String.format( "%-18s", smt[i] ) );
			}
			sb.append("\n");
			int count = 1;
			while ( rs.next() ) {
				sb.append( String.format( "%-18s", count ++ ) );
				for ( int j = 1; j <= 4; ++j ) {
					sb.append( String.format( "%-18s", rs.getString( j ) ) );
				}
				sb.append("\n");
			}
			System.out.println( sb.toString() );
			System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요" );
			System.in.read();
			System.in.read();
			sb = new StringBuilder();
			Top_AdminMain.Top_AdminSelScreen();
		} catch ( SQLRecoverableException se ) {
			System.err.println("데이터베이스 연결에 실패했습니다. 네트워크를 확인하세요. 시스템을 종료합니다.");
			System.exit(0);
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
		}
	}
	
	protected static void AdminFindId() {

		System.out.print("조회하실 관리자의 아이디를 입력하세요 : ");
		add = sc.next();
		try {
			conn = Top_JDBC_Connection.openDataBase();
			pstmt = conn.prepareStatement(topsql.AdminSelectIdSQL);
			pstmt.setString( 1, add );
			rs = pstmt.executeQuery();
			for ( int i = 0; i <= 4; ++i ) {
				sb.append( String.format( "%-18s", smt[ i ] ) );
			}
			sb.append("\n");
			int count = 1;
			while ( rs.next() ) {
				sb.append( String.format( "%-18s", count ++ ) );
				for ( int j = 1; j <= 4; ++j ) {
					sb.append( String.format( "%-18s", rs.getString( j ) ) );
				}
				sb.append("\n");
			}
			System.out.println( sb.toString() );
			System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요" );
			System.in.read();
			System.in.read();
			sb = new StringBuilder();
			Top_AdminMain.Top_AdminSelScreen();
		} catch ( SQLRecoverableException se ) {
			System.err.println("데이터베이스 연결에 실패했습니다. 네트워크를 확인하세요. 시스템을 종료합니다.");
			System.exit(0);
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
		}
	}
	
	protected static void AdminFindName() {
		
		System.out.print("조회하실 관리자의 이름을 입력하세요 : ");
		add = sc.next();
		try {
			conn = Top_JDBC_Connection.openDataBase();
			pstmt = conn.prepareStatement(topsql.AdminSelectNameSQL);
			pstmt.setString( 1, add );
			rs = pstmt.executeQuery();
			for ( int i = 0; i <= 4; ++i ) {
				sb.append( String.format( "%-18s", smt[ i ] ) );
			}
			sb.append("\n");
			int count = 1;
			while ( rs.next() ) {
				sb.append( String.format( "%-18s", count ++ ) );
				for ( int j = 1; j <= 4; ++j ) {
					sb.append( String.format( "%-18s", rs.getString( j ) ) );
				}
				sb.append("\n");
			}
			System.out.println( sb.toString() );
			System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요" );
			System.in.read();
			System.in.read();
			sb = new StringBuilder();
			Top_AdminMain.Top_AdminSelScreen();
		} catch ( SQLRecoverableException se ) {
			System.err.println("데이터베이스 연결에 실패했습니다. 네트워크를 확인하세요. 시스템을 종료합니다.");
			System.exit(0);
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
		}
	}
}